package com.wy.OneClient;

import com.wy.OneClient.pojo.Message;
import com.wy.OneClient.thread.Receive;
import com.wy.OneClient.thread.Send;
import com.wy.OneClient.util.Utils;

import java.net.DatagramSocket;
import java.net.SocketException;

/**
 * @author 吴宇~
 * @motto 我亦无他，唯手熟尔。
 * @edition jdk1.8
 * @reflection 0-1 喧闹任其喧闹，自由我自为之，我自风情万种，与世无争。
 * @date 2024/03/03/19:24
 * @target 心若有所向往，何惧道阻且长
 */
public class client {
    //    线程开启开始结束的标志
    public static volatile boolean notice = true;
    //    真正是否和对方连接的标志
    public static volatile boolean connectFlag = false;
    //    虚拟和对方连接的标示
    public static volatile boolean virtualConnectFlag = false;


    public static void main(String[] args) throws SocketException {
        run();
    }

    public static void run() throws SocketException {
        Message message = new Message();
//        TODO：连接前输入名字, 端口，目标机端口，ip，
//        Utils.fillInTheBasicInformation(message);
        DatagramSocket datagramSocket = new DatagramSocket(message.getAddressInfo().getLocalPort());

        Thread receiveThread = new Thread(new Receive(datagramSocket, message));
        receiveThread.start();

        Thread sendThread = new Thread(new Send(Info.SCANNER, datagramSocket, message));
        sendThread.start();
    }
}


//基本功能是实现了，但是写的屎山！！！也越来越大了。
//优化：   1. 发送线程的时候   标识符有点多，有些冗余
//        2. 因为标识符所以关闭线程时候的逻辑也有些乱，很杂乱无章
//        3. 代码冗余，很多地方可以进行优化，合并，
//        5. 发送文件的基础代码实现了，  接下来就是实现分块上传， 发送文件的时候应该是开启一个新的线程操作，否则这个线程 会堵塞。造成通讯失败，
//        差不多了，还应该有一些提示 开始发送，开始接受。是否同意等等，  最大发送的文件是多大等等

//        6. 控制台 显示的不太美观 ，   需要完善，这个在于审美，自己搞呗。
//        7. 加入控制台输入的时候的音效，接受信息/文件时候的音效
//        8. 命令行的完善，

//       可以触发一些彩蛋。
//
//  优化！！ 这个东西永无止境
//udp项目  失败次数为多少就认为是失败的。  因为容易可能有些原因导致的，没有接收到已连接的请求。
